package com.mask.im.business.model.entity.chat;

import java.util.Date;

import com.baomidou.mybatisplus.annotation.*;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

/**
 * 好友聊天记录实体类
 *
 * @author jian
 */

@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
@TableName("im_friend_chat_message")
public class IMFriendChatMessageDO {
    /**
     * 主键Id
     */
    @TableId(type = IdType.ASSIGN_ID)
    private Long id;
    /**
     * 临时id
     */
    private String tempId;
    /**
     * 发送的用户id
     */
    private Long senderId;
    /**
     * 接收的用户id
     */
    private Long receiverId;
    /**
     * 消息文本内容（仅文本消息有效，其他类型消息可存摘要）
     */
    private String content;
    /**
     * 发送者是否删除：0=否，1=是
     */
    private Boolean senderDeleted;
    /**
     * 接收者是否删除：0=否，1=是
     */
    private Boolean receiverDeleted;
    /**
     * 是否已读：0=未读，1=已读
     */
    private Boolean isRead;
    /**
     * 是否撤回：0=否，1=是
     */
    private Boolean isRetracted;
    /**
     * 发送状态：0=未通过，1=成功，2=非好友，3=已拉黑
     */
    private Integer sendStatus;
    /**
     * 消息类型
     */
    private Integer messageType;

    /**
     * 扩展信息（JSON格式，存储不同消息类型的特有属性）
     * 替代 mediaUrl、quotedXXX 等字段
     */
    @TableField(value = "extInfo")
    private String extInfo;
    /**
     * 消息序号（单聊内递增，用于排序）
     */
    private Long sequence;
    /**
     * 创建时间
     */
    @TableField(fill = FieldFill.INSERT)
    private Date createTime;
    /**
     * 更新时间
     */
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private Date updateTime;
}

